# 带参数的装饰器: 希望装饰器内部能够根据传入的参数而实现不同的功能
# 解决办法:包内包<将装饰器放到一个外部函数,外部函数提供参数,装饰器直接使用>
# 装饰器工厂
import time


def get_run_time(flag):
    def gettime(f):
        def inner(*args, **kwargs):     # 形参
            start = time.time()
            result = f(*args, **kwargs)     # 实参 | 返回函数值
            end = time.time()
            if flag == 0:
                print("执行时间:%d" % (end-start))  # 参数为0 整数输出时间
            else:
                print("执行时间:%f" % (end - start))    # 参数为其他　小数输出时间
            return result
        return inner
    return gettime


@get_run_time(1)    # 通过装饰器工厂的参数设置不同 达到装饰器输出时间的格式不同
def fun(n):
    for _ in range(n):
        time.sleep(1)
    return "普通函数执行完毕!"

print(fun(3))

